added more  features, refactored specs a bit