initial commit with minor refactor towards FRP