adding documentation, cleaning up method_missing