add enableMethodMissing and some methods, rewrite with module pattern