added business layer & unit tests