more crappy pattern features
refactoring