i should consider reimplementing this software