cleaned up
completed singleton