updates, cleaner code and separate testing module