Updated for tests and bugs