adds features quickly, needs testing and refactors