+ implement register bank & refactor tests